Field of the Invention
The present invention relates to resource allocation. In particular, but not exclusively, the present invention relates to resource allocation for one or more digital signal processors in a media gateway.
Description of the Related Technology
In a communications network, a media gateway is used to couple two or more networks. Typically these networks are different. When coupling networks of different types, a media gateway converts media provided in a first format from a first type of network to a second format required in a second type of network. For example, a media gateway may terminate bearer channels from a switched circuit network (e.g. DSOs) and media streams from a packet network (e.g. real-time transport protocol (RTP) streams in an internet protocol (IP) network). In this way, public-switched telephone networks may be coupled to packet-switched IP networks and vice versa.
The term media gateway is typically used to refer to a combination of hardware and control software; for example, a physical computing device or server executing, in use, one or more sets of computer program code. FIG. 1 shows an example of a media gateway 100. The physical computing device typically comprises one or more digital signal processors (DSPs). In FIG. 1, media gateway 100 is shown with two DSPs 110-A and 110-B. A DSP is a processing component that has an architecture optimized for performing digital signal processing. For example, a DSP may have a specialized instruction set adapted to repeatedly perform a number of mathematical functions on a number of data samples that form part of a signal stream. Each DSP may comprise a plurality of processing cores. In FIG. 1, the first DSP 110-A is shown as having four DSP cores: 120-A to 120-D. The DSP cores of the second DSP 110-B are omitted for clarity. The term “core” is used to refer to a central processing unit that is able to read and execute computer program code. This code may be retrieved from random access or read only memory. A media gateway may have a plurality of DSPs, wherein each DSP has a plurality of cores. Each DSP core has a number of resources. These resources may comprise, for example, one or more of: processing resources associated with a number of instructions that can be processed by a central processing unit; memory and/or cache for storing data and/or instructions; and conference resources associated with a conference call.
A media gateway processes one or more communication channels. These may comprise logical channels that carry data associated with communications between two or more parties. In the context of one or more DSPs that constitute a media gateway, the term “DSP channel” is used to refer to a data processing unit that processes or handles data carried in a communications channel. The data may relate to a media stream or control data. For example, a DSP channel may process an RTP/Nb stream or a DSO stream, handle High-Level Data Link Control (HDLC) signaling or play media from an announcement file into a media stream. In practice a media gateway may be capable of processing audio, video and T.120 protocol data alone or in any combination. It may also be capable of full duplex media translations as well as playing audio and/or video messages. It is also capable of performing other interactive voice response (IVR) functions and may perform media conferencing.
When processing data with one or more DSPs in a media gateway, a DSP context is established. A DSP context is a collection of one or more DSP channels. These channels may be related. For example, the may comprise audio and video channels for a teleconference. In use, a DSP context is established in relation to a DSP core. The DSP core is then responsible for processing any DSP channels within that DSP context, for example until a call ends. In FIG. 1, two DSP contexts 125-A and 125-B are schematically shown. These DSP contexts 125 are assigned to a first DSP core 120-A. The DSP contexts assigned to the other DSP cores are not shown in FIG. 1 for clarity.
In a communications network, it is often difficult to handle processing loads at a media gateway. For example, a DSP context needs to be established when a call is made; however future DSP core resource usage is not always known at the start of a call. For example, as a call progresses further DSP core resources may be required. As a DSP may also handle a plurality of DSP contexts, e.g. a plurality of calls, simultaneously, a DSP core processing a particular DSP context can often run out of available resources and be required to decline requests. For example, it may not be possible to add additional participants to a call or add video capabilities to an existing audio call.